﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ECOSYSTEM_BL;
using ECOSYSTEM_Dominio;

namespace ECOSYSTEMPRESENTACION
{
    public partial class frmReciboIngreso : Form
    {
        public frmReciboIngreso()
        {
            InitializeComponent();
        }
        ReciboIngreso elRecIngreso = new ReciboIngreso();
        ReciboIngresoBL elRecIngresoBL = new ReciboIngresoBL();
        ClienteBL elClienteBL = new ClienteBL();

        private ReciboIngreso ObtenerObjeto()
        {
            elRecIngreso.NroRecIngreso = txtNroReciboIngre.Text;
            elRecIngreso.Concepto = txtDetalleIngre.Text;
            elRecIngreso.MontoTotal = Convert.ToDouble(txtMontoRecIngre.Text);
            elRecIngreso.Cuenta = Convert.ToDouble(txtACuenta.Text);
            elRecIngreso.Saldo = Convert.ToDouble(txtSaldo.Text);
            elRecIngreso.FechaEmision = dtpFecEmision.Text;
            elRecIngreso.ElCliente = Convert.ToString(cmbCliente.SelectedValue);
            return elRecIngreso;
        }
        private Boolean GuardarReciboIngreso()
        {
            ReciboIngreso elRecIngreso = ObtenerObjeto();
            elRecIngresoBL.guardarReciboIngreso(elRecIngreso);
            return true;
        }
        private Boolean ActualizarReciboIngreso()
        {
            ReciboIngreso elRecIngreso = ObtenerObjeto();
            if (txtNroReciboIngre.Text == lblTempoNroRecibo.Text)
            {
                elRecIngresoBL.ActualizarReciboIngreso(elRecIngreso, Convert.ToInt32(lblCodigoRecibo.Text), "");
            }
            else { elRecIngresoBL.ActualizarReciboIngreso(elRecIngreso, Convert.ToInt32(lblCodigoRecibo.Text), txtNroReciboIngre.Text); }
            return true;
        }
        //LLENAR COMBO CLIENTE
        private void LlenarComboCliente()
        {
            if (cmbCliente.DataSource == null)
            {
                cmbCliente.DataSource = elClienteBL.ObtenerClientes("Todos");
                cmbCliente.DisplayMember = "Cliente";
                cmbCliente.ValueMember = "RUC-DNI";
                cmbCliente.Text = "";
            }
        }
        //LLENAR GRILLA
        private void llenarDGVListaClientes()
        {
            if (dgvListaClientes.DataSource == null)
            {
                dgvListaClientes.DataSource = elRecIngresoBL.ObtenerReciboIngreso();
                filtrador.DataSource = elRecIngresoBL.ObtenerReciboIngreso();
            }
        }
        //FILTRO PARA LA GRILLA
        private void AplicarFiltro()
        {
            int ret = filtrar_dgvListaProducto("Cliente", txtFiltrar.Text.Trim(), filtrador, dgvListaClientes);
            if (ret == 0)
            {
                txtFiltrar.BackColor = Color.Red;
            }
            else
            {
                txtFiltrar.BackColor = Color.White;
            }
        }
        private int filtrar_dgvListaProducto(String Columna, String texto, BindingSource Binding, DataGridView data)
        {
            if (filtrador.DataSource == null) { return 0; }
            try
            {
                String filtro = String.Empty;
                filtro = "LIKE '" + texto.Trim() + "%'";
                if (filtro != String.Empty)
                {
                    filtro = "[" + Columna + "]" + filtro;
                }
                Binding.Filter = filtro;
                data.DataSource = Binding.DataSource;
                return Binding.Count;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
            return 0;
        }
        //fin
        private void LimpiarCampos()
        {
            groupBox2.Enabled = false;
            groupBox3.Enabled = false;
            btnGuardar.Enabled = false;
            btnActualizar.Enabled = false;
            btnBuscar.Enabled = true;
            btnNuevo.Enabled = true;
            btnCancelar.Enabled = false;
            txtFiltrar.Text = "";
            dgvListaClientes.DataSource = null;
            txtNroReciboIngre.Text = "";
            cmbCliente.DataSource = null;
            txtDetalleIngre.Text = "";
            txtMontoRecIngre.Text = "";
            txtACuenta.Text = "";
            txtSaldo.Text = "0.00";
            dtpFecEmision.Value = DateTime.Now;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            try
            {
                LimpiarCampos();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            try
            {
                groupBox2.Enabled = true;
                llenarDGVListaClientes();
                LlenarComboCliente();
                btnNuevo.Enabled = false;
                btnCancelar.Enabled = true;
                btnBuscar.Enabled = false;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            try
            {
                GuardarReciboIngreso();
                MessageBox.Show("RECIBO DE INGRESO REGISTRADO CORRECTAMENTE");
                LimpiarCampos();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnActualizar_Click(object sender, EventArgs e)
        {
            try
            {
                ActualizarReciboIngreso();
                MessageBox.Show("RECIBO DE INGRESO ACTUALIZADO CORRECTAMENTE");
                LimpiarCampos();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            try
            {
                groupBox3.Enabled = true;
                btnCancelar.Enabled = true;
                btnGuardar.Enabled = true;
                btnBuscar.Enabled = false;
                txtNroReciboIngre.Select();
                btnNuevo.Enabled = false;
                LlenarComboCliente();
                dtpFecEmision.Value = DateTime.Now;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void dgvListaClientes_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                Int32 nroFila = Int32.Parse(e.RowIndex.ToString());
                txtNroReciboIngre.Text = Convert.ToString(dgvListaClientes["NroRecIngreso", nroFila].Value);
                cmbCliente.SelectedValue = dgvListaClientes["RUC_DNI_Cliente", nroFila].Value;
                txtDetalleIngre.Text = Convert.ToString(dgvListaClientes["Concepto", nroFila].Value);
                txtMontoRecIngre.Text = Convert.ToString(dgvListaClientes["MontoTotal", nroFila].Value);
                txtACuenta.Text = Convert.ToString(dgvListaClientes["A_Cuenta", nroFila].Value);
                txtSaldo.Text = Convert.ToString(dgvListaClientes["Saldo", nroFila].Value);
                dtpFecEmision.Value = Convert.ToDateTime(dgvListaClientes["FechaEmision", nroFila].Value);
                lblCodigoRecibo.Text = Convert.ToString(dgvListaClientes["ReciboIngresoID", nroFila].Value);
                lblTempoNroRecibo.Text = Convert.ToString(dgvListaClientes["NroRecIngreso", nroFila].Value);
                groupBox3.Enabled = true;
                btnActualizar.Enabled = true;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtFiltrar_TextChanged(object sender, EventArgs e)
        {
            AplicarFiltro();
        }

        private void txtMontoRecIngre_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (txtMontoRecIngre.Text != "" && txtACuenta.Text != "")
                {
                    txtSaldo.Text = Convert.ToString(Convert.ToDouble(txtMontoRecIngre.Text) - Convert.ToDouble(txtACuenta.Text));
                }
                else
                {
                    txtSaldo.Text = "0.00";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void txtACuenta_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (txtMontoRecIngre.Text != "" && txtACuenta.Text != "")
                {
                    txtSaldo.Text = Convert.ToString(Convert.ToDouble(txtMontoRecIngre.Text) - Convert.ToDouble(txtACuenta.Text));
                }
                else
                {
                    txtSaldo.Text = "0.00";
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }        
    }
}
